package controller;

import com.toedter.calendar.JDateChooser;
import model.Worker;
import model.WorkerTableModel;
import serializacja.OdczytIZapisDoPliku;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.Date;

/**
 * Author: Daniel
 * Date: 08.08.13
 */

public class Presenter {
    private JTextField imieTF;
    private JTextField nazwiskoTF;
    private JTextField miastoTF;
    private JTable tabelka;
    private JDateChooser dataUrDCh;

    private OdczytIZapisDoPliku odczytIZapisDoPliku;

    public Presenter() {
        odczytIZapisDoPliku = new OdczytIZapisDoPliku();
    }

    class SluchaczPrzyciskuDodaj implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            String imie = imieTF.getText();
            String nazwisko = nazwiskoTF.getText();
            String miasto = miastoTF.getText();
            Date dataUr = dataUrDCh.getDate();
            Worker newWorker = new Worker(imie, nazwisko, miasto, dataUr);
            WorkerTableModel tableModel = (WorkerTableModel) tabelka.getModel();
            tableModel.addRow(newWorker);
            usunTekstZPolTekstowych();
        }
    }

    private void usunTekstZPolTekstowych() {
        imieTF.setText("");
        nazwiskoTF.setText("");
        miastoTF.setText("");
    }

    class SluchaczPrzyciskuUsun implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            int selectedRow = tabelka.getSelectedRow();
            if (selectedRow == -1) {
                JOptionPane.showMessageDialog(
                        null,
                        "Zaznacz wiersz który chcesz usunąć",
                        "Informacja",
                        JOptionPane.INFORMATION_MESSAGE);
            } else {
                WorkerTableModel tableModel = (WorkerTableModel) tabelka.getModel();
                tableModel.deleteRow(tabelka.getSelectedRow());
            }
        }
    }

    class SluchaczPrzyciskuZapisz implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            WorkerTableModel tableModel = (WorkerTableModel) tabelka.getModel();
            try {
                odczytIZapisDoPliku.zapiszDoPliku(tableModel.getWierszeZPrac());
            } catch (IOException e1) {
                JOptionPane.showMessageDialog(
                        null,
                        "Nie udalo sie zapisać pracowników do pliku",
                        "Informacja",
                        JOptionPane.INFORMATION_MESSAGE
                );
            }
            JOptionPane.showMessageDialog(
                    null,
                    "Pomyślnie zapisano pracownikow do pliku",
                    "Informacja",
                    JOptionPane.INFORMATION_MESSAGE
            );
        }
    }

    class SluchaczPrzyciskuZamnij implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    }

    public void setImieTF(JTextField imieTF) {
        this.imieTF = imieTF;
    }

    public void setNazwiskoTF(JTextField nazwiskoTF) {
        this.nazwiskoTF = nazwiskoTF;
    }

    public void setMiastoTF(JTextField miastoTF) {
        this.miastoTF = miastoTF;
    }

    public void setDataUrDCh(JDateChooser dataUrDCh) {
        this.dataUrDCh = dataUrDCh;
    }

    public void setPrzyciskDodaj(JButton przyciskDodaj) {
        przyciskDodaj.addActionListener(new SluchaczPrzyciskuDodaj());
    }

    public void setTabelka(JTable tabelka) {
        this.tabelka = tabelka;

    }

    public void setPrzyciskUsun(JButton przyciskUsun) {
        przyciskUsun.addActionListener(new SluchaczPrzyciskuUsun());
    }

    public void setZapiszMenuItem(JMenuItem zapiszMenuItem) {
        zapiszMenuItem.addActionListener(new SluchaczPrzyciskuZapisz());
    }

    public void setZamknijMenuItem(JMenuItem zamknijMenuItem) {
        zamknijMenuItem.addActionListener(new SluchaczPrzyciskuZamnij());
    }
}
